package sy4_Creational_Pattern.factory.simple.other;

/*
 * 简单工厂模式：工厂类返回某种类型的对象（产品）
 * 主要角色：产品接口、具体产品类和工厂类
 */

interface ICar { // 小汽车接口
	public void driving(); // 驾驶方法
}

class UpCar implements ICar { // 高档小汽车
	@Override
	public void driving() {
		System.out.println("开高档小汽车");
	}
}

class MidCar implements ICar { // 中档小汽车
	@Override
	public void driving() {
		System.out.println("开中档小汽车");
	}
}

class DnCar implements ICar { // 低档小汽车
	@Override
	public void driving() {
		System.out.println("开低档小汽车");
	}
}

class CarSimpleFactory { // 简单工厂类
	public static final String UPTYPE = "uptype";
	public static final String MIDTYPE = "midtype";
	public static final String DNTYPE = "dntype";

	public static ICar create(String mark) { // 静态方法
		ICar car = null;
		if (mark.equals(UPTYPE)) { // 如果是高档类型
			car = new UpCar(); // 则创建高档车对象
		} else if (mark.equals(MIDTYPE)) {
			car = new MidCar();
		} else if (mark.equals(DNTYPE)) {
			car = new DnCar();
		}
		return car; // 返回选择的对象
	}
}

public class Client2 { // 测试类
	public static void main(String[] args) {
		ICar car = CarSimpleFactory.create("uptype"); // 可更改为其它类型
		car.driving();
	}
}
